Thread তৈরি করার দুটি পদ্ধতি (Thread Class vs Runnable Interface)

Java Technologies - জাভা কনকারেন্সি (Java Concurrency) - Threads এবং Runnable Interface
206

জাভাতে থ্রেড তৈরি করার দুটি মূল পদ্ধতি রয়েছে:

  1. Thread ক্লাস ব্যবহার করে
  2. Runnable ইন্টারফেস ব্যবহার করে

এই দুটি পদ্ধতির বিস্তারিত ব্যাখ্যা, উদাহরণ এবং তুলনা নিচে দেওয়া হলো:


পদ্ধতি ১: Thread ক্লাস ব্যবহার করে থ্রেড তৈরি

Thread ক্লাস এক্সটেন্ড করে থ্রেড তৈরি করা সহজ, কারণ এটি জাভার বিল্ট-ইন ক্লাস।

কোড উদাহরণ:

class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("Thread Class: " + i);
            try {
                Thread.sleep(500); // থ্রেডকে কিছুক্ষণের জন্য থামান
            } catch (InterruptedException e) {
                System.out.println("Thread interrupted");
            }
        }
    }
}

public class ThreadExample {
    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start(); // থ্রেড চালু করুন
    }
}

বৈশিষ্ট্য:

  • Thread ক্লাস এক্সটেন্ড করে run() মেথড ওভাররাইড করতে হয়।
  • নতুন থ্রেড শুরু করতে start() মেথড ব্যবহার করা হয়।

পদ্ধতি ২: Runnable ইন্টারফেস ব্যবহার করে থ্রেড তৈরি

Runnable ইন্টারফেস ব্যবহার করে থ্রেড তৈরি করা আরও নমনীয়, কারণ এতে একাধিক ইনহেরিট্যান্সের সীমাবদ্ধতা থাকে না।

কোড উদাহরণ:

class MyRunnable implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            System.out.println("Runnable Interface: " + i);
            try {
                Thread.sleep(500); // থ্রেডকে কিছুক্ষণের জন্য থামান
            } catch (InterruptedException e) {
                System.out.println("Thread interrupted");
            }
        }
    }
}

public class RunnableExample {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();
        Thread thread = new Thread(myRunnable); // Runnable থেকে Thread তৈরি
        thread.start(); // থ্রেড চালু করুন
    }
}

বৈশিষ্ট্য:

  • Runnable ইন্টারফেস ইমপ্লিমেন্ট করে run() মেথড ওভাররাইড করতে হয়।
  • Thread ক্লাসের একটি অবজেক্ট তৈরি করতে Runnable পাস করতে হয়।

Thread Class বনাম Runnable Interface এর তুলনা

বিষয়Thread ClassRunnable Interface
পদ্ধতিThread ক্লাস এক্সটেন্ড করেRunnable ইন্টারফেস ইমপ্লিমেন্ট করে
ইনহেরিট্যান্সএকটি ক্লাস একবারেই Thread এক্সটেন্ড করতে পারেএকটি ক্লাস একাধিক ইন্টারফেস ইমপ্লিমেন্ট করতে পারে
নমনীয়তাকম নমনীয়, কারণ একাধিক ক্লাস এক্সটেন্ড করা যায় নাআরও নমনীয়, কারণ এটি অন্যান্য ইন্টারফেসের সাথে ইমপ্লিমেন্ট করা যায়
অবজেক্ট শেয়ারিংশেয়ার করা কঠিনশেয়ার করা সহজ
সিনট্যাক্সসরাসরি Thread এক্সটেন্ড করতে হয়Runnable ইমপ্লিমেন্ট করে Thread তৈরি করতে হয়
উদাহরণ ব্যবহারসহজ উদাহরণজটিল পরিস্থিতিতে বেশি কার্যকর

উদাহরণ: একাধিক থ্রেড তৈরি করা

Thread Class দিয়ে:

class Thread1 extends Thread {
    @Override
    public void run() {
        System.out.println("Thread 1 is running...");
    }
}

class Thread2 extends Thread {
    @Override
    public void run() {
        System.out.println("Thread 2 is running...");
    }
}

public class MultiThreadExample {
    public static void main(String[] args) {
        Thread1 t1 = new Thread1();
        Thread2 t2 = new Thread2();
        t1.start();
        t2.start();
    }
}

Runnable Interface দিয়ে:

class Task1 implements Runnable {
    @Override
    public void run() {
        System.out.println("Task 1 is running...");
    }
}

class Task2 implements Runnable {
    @Override
    public void run() {
        System.out.println("Task 2 is running...");
    }
}

public class MultiRunnableExample {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Task1());
        Thread t2 = new Thread(new Task2());
        t1.start();
        t2.start();
    }
}

যখন কোনটি ব্যবহার করবেন

  1. Thread ক্লাস ব্যবহার করুন:
    • যদি আপনার ক্লাস শুধুমাত্র একটি থ্রেড হিসাবে কাজ করে।
    • এবং অন্য কোনো ক্লাস এক্সটেন্ড করার প্রয়োজন না থাকে।
  2. Runnable ইন্টারফেস ব্যবহার করুন:
    • যদি আপনার ক্লাস অন্য কোনো ক্লাস এক্সটেন্ড করার প্রয়োজন হয়।
    • এবং শেয়ারযোগ্য থ্রেড তৈরি করতে চান।

Thread ক্লাস সহজ এবং সরাসরি হলেও Runnable ইন্টারফেস জাভা কনকারেন্সি ব্যবহারের জন্য আরও নমনীয় এবং প্রায়শই প্রেফার্ড। সঠিক পদ্ধতি নির্বাচন করতে হলে আপনার প্রয়োজন ও প্রেক্ষাপট বিবেচনা করুন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...